/**
 * @file 全局能力的配置与获取
 */

function getGlobalRef() {
  return Object.getPrototypeOf(global) || global
}

const quickappGlobal = getGlobalRef();

/**
 * 设置全局(被APP与Page共享)数据；
 * @param key {string}
 * @param val {*}
 */
function setGlobalData(key, val) {
  quickappGlobal[key] = val
}

/**
 * 获取全局(被APP与Page共享)数据；
 * @param key {string}
 * @return {*}
 */
function getGlobalData(key) {
  return quickappGlobal[key]
}

// 两个方法默认定义在全局
// setGlobalData('setGlobalData', setGlobalData);
// setGlobalData('getGlobalData', getGlobalData);

// TODO：开发者定义全局环境变量，后面即可直接访问
// 注入regeneratorRuntime 支持async await
// setGlobalData('regeneratorRuntime', require('@babel/runtime/regenerator'));

// setGlobalData('fetch', require('@system.fetch'))
// 原生router
setGlobalData('$router', require('@system.router'));
// 原生prompt
setGlobalData('$prompt', require('@system.prompt'));
// 原生file
setGlobalData('$file', require('@system.file'));
// 原生device
setGlobalData('$device', require('@system.device'));
// 原生share
setGlobalData('$share', require('@system.share'));
// 原生serviece.share
setGlobalData('$shareSe', require('@service.share'));
// 原生audio
setGlobalData('$audio', require('@system.audio'));
// 原生media
setGlobalData('$media', require('@system.media'));
// 原生clipboard
setGlobalData('$clipboard', require('@system.clipboard'));
// 原生wxpay
setGlobalData('$wxpay', require('@service.wxpay'));
// 原生alipay
setGlobalData('$alipay', require('@service.alipay'));
// 原生media
setGlobalData('$media', require('@system.media'));
// 原生network
setGlobalData('$network', require('@system.network'));

// 全局配置文件
setGlobalData('$config', require('./config').default);
// 全局数据
setGlobalData('$data', require('./data').default);
// 全局方法
setGlobalData('$util', require('./methods').default);
// 自定义请求对象
setGlobalData('$http', require('./http/index').default);
// 缓存读写
setGlobalData('$store', require('./store/index').default);
